const Router = require('koa-router')
const Order = require('../model/order.js')
const jwt = require('jsonwebtoken')
const goodsOrder = new Router()

// 下订单
goodsOrder.post('/buy', async (ctx, next) => {
	try {
		// 请求头中的token 解析后带有‘Bearer ’和空格，因此需要按空格截取
		let getToken = ctx.request.header.authorization.split(' ')[1]
		// 将截取后的字符串再通过decode反解出openid
		let openid = jwt.decode(getToken).info
		// 拿到发送过来的订单数据
		let useOrder = ctx.request.body
		// 将反解出的openid重新赋值给订单中的userOpenid字段
		useOrder.userOpenid = openid
		// 保存订单到数据表中
		let data = new Order(useOrder)
		await data.save()
		ctx.body = {
			code: 2,
			msg: '下单成功'
		}
	} catch (e) {
		ctx.body = 'err'
	}
})

// 查询订单 ,通过用户授权登录保存的openid进行查询
// 微信用户的openid是唯一的。在用户完成授权登录以后，通过jwt将openid加密到token中返还给用户，当用户访问本人订单时，再通过jwt反解出header中的token，取出openid进行查询比对。
goodsOrder.get('/order', async (ctx, next) => {
	try {
		// 请求头中的token 解析后带有‘Bearer ’和空格，因此需要按空格截取
		let getToken = ctx.request.header.authorization.split(' ')[1]
		// 将截取后的字符串再通过decode反解出openid
		let openid = jwt.decode(getToken).info
		
		let res = await Order.find({
			userOpenid: openid
		}).sort({createTime:-1})
		if (res) {
			ctx.body = {
				code: 2,
				data: res
			}
		} else{
			ctx.body = {
				code: 2,
				data: res,
				msg:'暂无数据'
			}
		}
	} catch (e) {
		//TODO handle the exception
		console.log(e)
	}
})
module.exports = goodsOrder
